package com.love.marriage.TecentIm.service;

import com.love.marriage.TecentIm.vo.LocalImChatListVo;

import java.util.List;
import java.util.Map;

/**
 * WuKongIM 服务接口
 * 用于实现单人之间的即时通讯功能
 * 文档：https://docs.githubim.com/zh/api/introduction
 */
public interface WuKongImService {

    /**
     * 发送单人消息
     * @param fromUid 发送者用户ID
     * @param toUid 接收者用户ID
     * @param messageContent 消息内容
     * @return 消息ID
     */
    Long sendMessage(String fromUid, String toUid, String messageContent);

    /**
     * 同步会话消息
     * 调用 WuKongIM API: POST /conversation/sync
     * 文档: https://docs.githubim.com/zh/api/conversation/sync
     * @param uid 用户ID
     * @param syncSequence 同步序列号
     * @param limit 限制数量
     * @return 聊天列表
     */
    List<LocalImChatListVo> getImChatList(String uid, Long syncSequence, Integer limit);

    /**
     * 获取IM聊天记录
     * 调用 WuKongIM API: POST /channel/messagesync
     * 文档: https://docs.githubim.com/zh/api/message/message-sync
     * @param loginUid 当前登录用户ID
     * @param channelId 频道ID
     * @param channelType 频道类型
     * @param startMessageSeq 开始消息序号
     * @param endMessageSeq 结束消息序号
     * @param limit 限制数量
     * @return 聊天记录列表
     */
    List<Map<String, Object>> getImChatHistory(String loginUid, String channelId, Integer channelType, Long startMessageSeq, Long endMessageSeq, Integer limit);

    /**
     * 设置会话未读数
     * 调用 WuKongIM API: POST /conversation/set-unread
     * 文档: https://docs.githubim.com/zh/api/conversation/set-unread
     * @param uid 用户ID
     * @param channelId 频道ID
     * @param channelType 频道类型
     * @param unreadCount 未读数量
     * @return 设置结果
     */
    Object setConversationUnread(String uid, String channelId, Integer channelType, Integer unreadCount);

    /**
     * 用户登录或注册
     * 先创建用户，再获取用户登录信息（包含token和IM地址）
     * @param userId 用户ID
     * @return 用户登录信息，包含token和IM地址等
     */
    Object loginOrRegister(String userId);

    /**
     * 获取用户登录状态和信息
     * @param userId 用户ID
     * @return 用户信息 VO
     */
    Object getUserLoginStatus(String userId);

    /**
     * 获取集群会话消息列表
     * 调用 WuKongIM 集群会话接口
     * API: GET /cluster/conversations?uid={uid}
     * @param uid 用户ID
     * @return 聊天列表
     */
    List<LocalImChatListVo> getImChatList1(String uid, Long syncSequence, Integer limit);
}
